package org.example.netty.test.nio.netty.chat.bean;

import lombok.Data;
import lombok.ToString;
import org.example.netty.test.nio.netty.chat.common.MessageType;

/**
 * @author zp
 * @version 1.0
 * @description: Rpc协议请求对象
 * RPC是什么
 * RPC（Remote Procedure Call），翻译成中文就是远程过程调用。
 * 远程过程就是相对于本地方法而言的，是运行在某个远程的地方而不是本地。
 * 通过RPC可以实现像本地函数调用一样调用远程服务，是一种进程间的通信方式。RPC调用的本质可以用下图表示：
 * @date 2023/5/30 19:01
 */
@Data
@ToString(callSuper = true)
public class RpcRequest extends AbsMessageBase{
    /**
     * 请求对象的ID，客户端用来验证服务器请求和响应是否匹配
     */
    private String requestId;
    /**
     * 类名
     */
    private String className;
    /**
     * 方法名
     */
    private String methodName;
    /**
     * 参数类型
     */
    private Class<?>[] parameterTypes;
    /**
     * 入参
     */
    private Object[] parameters;

    @Override
    public int getMessageType() {
        return MessageType.MESSAGE_TYPE_RPC_REQUEST;
    }
}
